\documentclass{acm_proc_article-sp}
\usepackage[utf8]{inputenc}
\usepackage{color}

\def\inputfig#1{\input #1}
\def\inputtex#1{\input #1}
\def\inputal#1{\input #1}
\def\inputcode#1{\input #1}

\inputtex{logos.tex}
\inputtex{refmacros.tex}
\inputtex{other-macros.tex}

\begin{document}
\title{First-class Global Environments in Common Lisp}
\numberofauthors{1}
\author{\alignauthor
Robert Strandh\\
\affaddr{University of Bordeaux}\\
\affaddr{351, Cours de la Libération}\\
\affaddr{Talence, France}\\
\email{robert.strandh@u-bordeaux1.fr}}

\toappear{Permission to make digital or hard copies of all or part of
  this work for personal or classroom use is granted without fee
  provided that copies are not made or distributed for profit or
  commercial advantage and that copies bear this notice and the full
  citation on the first page. Copyrights for components of this work
  owned by others than the author(s) must be honored. Abstracting with
  credit is permitted. To copy otherwise, or republish, to post on
  servers or to redistribute to lists, requires prior specific
  permission and/or a fee.

ELS '15, April 20 - 21 2015, London, UK
Copyright is held by the author.
%  ACM 978-1-4503-2931-6/14/08\$15.00.???
%  http://dx.doi.org/10.1145/2635648.2635656
}

\maketitle

\begin{abstract}
\emph{Environments} are mentioned in many places in
the \commonlisp{} standard, but the nature of such objects is not
specified.  For the purpose of this paper, an environment is a mapping
from \emph{names} to \emph{meanings}.  In a typical \commonlisp{}
implementation the \emph{global environment} is not a first-class
object.

In this paper, we advocate first-class global environments,
not as an extension or a modification of the \commonlisp{} standard,
but as an implementation technique.  We state several advantages in
terms of bootstrapping, sandboxing, and more.  We show an
implementation where there is no performance penalty associated with
making the environment first class.  For performance purposes, the
essence of the implementation relies on the environment containing
\emph{cells} (ordinary \texttt{cons} cells in our implementation)
holding bindings of names to functions and global values that are
likely to be heavily solicited at runtime.
\end{abstract}

\category{D.3.3}{Programming Languages}{Language Constructs and Features}
[Modules, Packages]
\category{D.3.4}{Programming Languages}{Processors}
[Code generation, Run-time environments]

\terms{Design, Languages}

\keywords{\clos{}, \commonlisp{}, Environment}

\inputtex{spec-macros.tex}

\inputtex{sec-introduction.tex}
\inputtex{sec-previous.tex}
\inputtex{sec-our-method.tex}
\inputtex{sec-benefits.tex}
\inputtex{sec-conclusions.tex}
\inputtex{sec-acknowledgments.tex}
\inputtex{app-protocol.tex}

\bibliographystyle{abbrv}
\bibliography{environments}
\end{document}

%%  LocalWords:  sandboxing runtime
